package com.lanren.androidanimations.library;

import com.lanren.androidanimations.library.attention.BounceAnimator;
import com.lanren.androidanimations.library.attention.FlashAnimator;
import com.lanren.androidanimations.library.attention.PulseAnimator;
import com.lanren.androidanimations.library.attention.RubberBandAnimator;
import com.lanren.androidanimations.library.attention.ShakeAnimator;
import com.lanren.androidanimations.library.attention.StandUpAnimator;
import com.lanren.androidanimations.library.attention.SwingAnimator;
import com.lanren.androidanimations.library.attention.TadaAnimator;
import com.lanren.androidanimations.library.attention.WaveAnimator;
import com.lanren.androidanimations.library.attention.WobbleAnimator;
import com.lanren.androidanimations.library.bouncing_entrances.BounceInAnimator;
import com.lanren.androidanimations.library.bouncing_entrances.BounceInDownAnimator;
import com.lanren.androidanimations.library.bouncing_entrances.BounceInLeftAnimator;
import com.lanren.androidanimations.library.bouncing_entrances.BounceInRightAnimator;
import com.lanren.androidanimations.library.bouncing_entrances.BounceInUpAnimator;
import com.lanren.androidanimations.library.fading_entrances.FadeInAnimator;
import com.lanren.androidanimations.library.fading_entrances.FadeInDownAnimator;
import com.lanren.androidanimations.library.fading_entrances.FadeInLeftAnimator;
import com.lanren.androidanimations.library.fading_entrances.FadeInRightAnimator;
import com.lanren.androidanimations.library.fading_entrances.FadeInUpAnimator;
import com.lanren.androidanimations.library.fading_exits.FadeOutAnimator;
import com.lanren.androidanimations.library.fading_exits.FadeOutDownAnimator;
import com.lanren.androidanimations.library.fading_exits.FadeOutLeftAnimator;
import com.lanren.androidanimations.library.fading_exits.FadeOutRightAnimator;
import com.lanren.androidanimations.library.fading_exits.FadeOutUpAnimator;
import com.lanren.androidanimations.library.flippers.FlipInXAnimator;
import com.lanren.androidanimations.library.flippers.FlipInYAnimator;
import com.lanren.androidanimations.library.flippers.FlipOutXAnimator;
import com.lanren.androidanimations.library.flippers.FlipOutYAnimator;
import com.lanren.androidanimations.library.rotating_entrances.RotateInAnimator;
import com.lanren.androidanimations.library.rotating_entrances.RotateInDownLeftAnimator;
import com.lanren.androidanimations.library.rotating_entrances.RotateInDownRightAnimator;
import com.lanren.androidanimations.library.rotating_entrances.RotateInUpLeftAnimator;
import com.lanren.androidanimations.library.rotating_entrances.RotateInUpRightAnimator;
import com.lanren.androidanimations.library.rotating_exits.RotateOutAnimator;
import com.lanren.androidanimations.library.rotating_exits.RotateOutDownLeftAnimator;
import com.lanren.androidanimations.library.rotating_exits.RotateOutDownRightAnimator;
import com.lanren.androidanimations.library.rotating_exits.RotateOutUpLeftAnimator;
import com.lanren.androidanimations.library.rotating_exits.RotateOutUpRightAnimator;
import com.lanren.androidanimations.library.sliders.SlideInDownAnimator;
import com.lanren.androidanimations.library.sliders.SlideInLeftAnimator;
import com.lanren.androidanimations.library.sliders.SlideInRightAnimator;
import com.lanren.androidanimations.library.sliders.SlideInUpAnimator;
import com.lanren.androidanimations.library.sliders.SlideOutDownAnimator;
import com.lanren.androidanimations.library.sliders.SlideOutLeftAnimator;
import com.lanren.androidanimations.library.sliders.SlideOutRightAnimator;
import com.lanren.androidanimations.library.sliders.SlideOutUpAnimator;
import com.lanren.androidanimations.library.specials.HingeAnimator;
import com.lanren.androidanimations.library.specials.RollInAnimator;
import com.lanren.androidanimations.library.specials.RollOutAnimator;
import com.lanren.androidanimations.library.specials.in.DropOutAnimator;
import com.lanren.androidanimations.library.specials.in.LandingAnimator;
import com.lanren.androidanimations.library.specials.out.TakingOffAnimator;
import com.lanren.androidanimations.library.zooming_entrances.ZoomInAnimator;
import com.lanren.androidanimations.library.zooming_entrances.ZoomInDownAnimator;
import com.lanren.androidanimations.library.zooming_entrances.ZoomInLeftAnimator;
import com.lanren.androidanimations.library.zooming_entrances.ZoomInRightAnimator;
import com.lanren.androidanimations.library.zooming_entrances.ZoomInUpAnimator;
import com.lanren.androidanimations.library.zooming_exits.ZoomOutAnimator;
import com.lanren.androidanimations.library.zooming_exits.ZoomOutDownAnimator;
import com.lanren.androidanimations.library.zooming_exits.ZoomOutLeftAnimator;
import com.lanren.androidanimations.library.zooming_exits.ZoomOutRightAnimator;
import com.lanren.androidanimations.library.zooming_exits.ZoomOutUpAnimator;

/**
 * @ClassName TechniquesHelper
 * @Description TODO
 * @Author chongheng.wang
 * @Date 2020/3/10 17:10
 * @Version 1.0
 */
public class TechniquesHelper {
    public static final int DropOut = 0;//下降弹跳
    public static final int Landing = 1;//大》小
    public static final int TakingOff = 2;//小》大
    public static final int Flash = 3;//闪烁
    public static final int Pulse = 4;//动感
    public static final int RubberBand = 5;//橡皮筋 拉伸
    public static final int Shake = 6;//左右抖动
    public static final int Swing = 7;//上下摇摆
    public static final int Wobble = 8;//左右摇晃
    public static final int Bounce = 9;//上下弹跳
    public static final int Tada = 10;//惊喜 放大上下摇摆
    public static final int StandUp = 11;//站起来
    public static final int Wave = 12;//摇头 放大上下摇摆
    public static final int Hinge = 13;//右边掉落

    public static final int RollIn = 100;//滚入
    public static final int RollOut = 101;//滚出

    public static final int BounceIn = 200;//小》大  动感
    public static final int BounceInDown = 201;//下降 动感
    public static final int BounceInLeft = 202;//左边划入 动感
    public static final int BounceInRight = 203;//右边划入 动感
    public static final int BounceInUp = 204;//上升 动感

    public static final int FadeIn = 300;//淡入
    public static final int FadeInUp = 301;//淡入 上升
    public static final int FadeInDown = 302;//淡入 下降
    public static final int FadeInLeft = 303;//淡入 左边划入
    public static final int FadeInRight = 304;//淡入 右边划入
    public static final int FadeOut = 305;//淡出
    public static final int FadeOutDown = 306;//淡出 下降
    public static final int FadeOutLeft = 307;//淡出 左边划出
    public static final int FadeOutRight = 308;//淡出 左边划出
    public static final int FadeOutUp = 309;//淡出 上升

    public static final int FlipInX = 400;//翻转 上下
    public static final int FlipOutX = 401;//翻转 上下
    public static final int FlipInY = 402;//翻转 左右
    public static final int FlipOutY = 403;//翻转 左右

    public static final int RotateIn = 500;//旋转顺时针 淡入
    public static final int RotateInDownLeft = 501;//旋转顺时针 左边 淡入
    public static final int RotateInDownRight = 502;//旋转顺时针 右边 淡入
    public static final int RotateInUpLeft = 503;//旋转逆时针 左边 淡入
    public static final int RotateInUpRight = 504;//旋转顺时针 右边 淡入
    public static final int RotateOut = 505;//旋转顺时针 淡出
    public static final int RotateOutDownLeft = 506;//旋转顺时针 左边 淡出
    public static final int RotateOutDownRight = 507;//旋转顺时针 右边 淡出
    public static final int RotateOutUpLeft = 508;//旋转逆时针 左边 淡出
    public static final int RotateOutUpRight = 509;//旋转顺时针 右边 淡出

    public static final int SlideInLeft = 600;//左边 推入
    public static final int SlideInRight = 601;//右边 推入
    public static final int SlideInUp = 602;//上升 推入
    public static final int SlideInDown = 603;//下降 推入
    public static final int SlideOutLeft = 604;//左边 推出
    public static final int SlideOutRight = 605;//右边 推出
    public static final int SlideOutUp = 606;//上升 推出
    public static final int SlideOutDown = 607;//下降 推出

    public static final int ZoomIn = 700;//放大
    public static final int ZoomInDown = 701;//放大 下降
    public static final int ZoomInLeft = 702;//放大 左边 推入
    public static final int ZoomInRight = 703;//放大 右边 推入
    public static final int ZoomInUp = 704;//放大 上升
    public static final int ZoomOut = 705;//缩放
    public static final int ZoomOutDown = 706;//缩放 下降
    public static final int ZoomOutLeft = 707;//缩放 左边 推出
    public static final int ZoomOutRight = 708;//缩放 右边 推出
    public static final int ZoomOutUp = 709;//缩放 右边 推出

    public static BaseViewAnimator getAnimator(int anim) {
        BaseViewAnimator animator = null;
        switch (anim) {
            case DropOut:
                animator = new DropOutAnimator();
                break;
            case Landing:
                animator = new LandingAnimator();
                break;
            case TakingOff:
                animator = new TakingOffAnimator();
                break;
            case Flash:
                animator = new FlashAnimator();
                break;
            case Pulse:
                animator = new PulseAnimator();
                break;
            case RubberBand:
                animator = new RubberBandAnimator();
                break;
            case Shake:
                animator = new ShakeAnimator();
                break;
            case Swing:
                animator = new SwingAnimator();
                break;
            case Wobble:
                animator = new WobbleAnimator();
                break;
            case Bounce:
                animator = new BounceAnimator();
                break;
            case Tada:
                animator = new TadaAnimator();
                break;
            case StandUp:
                animator = new StandUpAnimator();
                break;
            case Wave:
                animator = new WaveAnimator();
                break;
            case Hinge:
                animator = new HingeAnimator();
                break;

            case RollIn:
                animator = new RollInAnimator();
                break;
            case RollOut:
                animator = new RollOutAnimator();
                break;

            case BounceIn:
                animator = new BounceInAnimator();
                break;
            case BounceInDown:
                animator = new BounceInDownAnimator();
                break;
            case BounceInLeft:
                animator = new BounceInLeftAnimator();
                break;
            case BounceInRight:
                animator = new BounceInRightAnimator();
                break;
            case BounceInUp:
                animator = new BounceInUpAnimator();
                break;

            case FadeIn:
                animator = new FadeInAnimator();
                break;
            case FadeInUp:
                animator = new FadeInUpAnimator();
                break;
            case FadeInDown:
                animator = new FadeInDownAnimator();
                break;
            case FadeInLeft:
                animator = new FadeInLeftAnimator();
                break;
            case FadeInRight:
                animator = new FadeInRightAnimator();
                break;
            case FadeOut:
                animator = new FadeOutAnimator();
                break;
            case FadeOutDown:
                animator = new FadeOutDownAnimator();
                break;
            case FadeOutLeft:
                animator = new FadeOutLeftAnimator();
                break;
            case FadeOutRight:
                animator = new FadeOutRightAnimator();
                break;
            case FadeOutUp:
                animator = new FadeOutUpAnimator();
                break;

            case FlipInX:
                animator = new FlipInXAnimator();
                break;
            case FlipOutX:
                animator = new FlipOutXAnimator();
                break;
            case FlipInY:
                animator = new FlipInYAnimator();
                break;
            case FlipOutY:
                animator = new FlipOutYAnimator();
                break;

            case RotateIn:
                animator = new RotateInAnimator();
                break;
            case RotateInDownLeft:
                animator = new RotateInDownLeftAnimator();
                break;
            case RotateInDownRight:
                animator = new RotateInDownRightAnimator();
                break;
            case RotateInUpLeft:
                animator = new RotateInUpLeftAnimator();
                break;
            case RotateInUpRight:
                animator = new RotateInUpRightAnimator();
                break;
            case RotateOut:
                animator = new RotateOutAnimator();
                break;
            case RotateOutDownLeft:
                animator = new RotateOutDownLeftAnimator();
                break;
            case RotateOutDownRight:
                animator = new RotateOutDownRightAnimator();
                break;
            case RotateOutUpLeft:
                animator = new RotateOutUpLeftAnimator();
                break;
            case RotateOutUpRight:
                animator = new RotateOutUpRightAnimator();
                break;

            case SlideInLeft:
                animator = new SlideInLeftAnimator();
                break;
            case SlideInRight:
                animator = new SlideInRightAnimator();
                break;
            case SlideInUp:
                animator = new SlideInUpAnimator();
                break;
            case SlideInDown:
                animator = new SlideInDownAnimator();
                break;
            case SlideOutLeft:
                animator = new SlideOutLeftAnimator();
                break;
            case SlideOutRight:
                animator = new SlideOutRightAnimator();
                break;
            case SlideOutUp:
                animator = new SlideOutUpAnimator();
                break;
            case SlideOutDown:
                animator = new SlideOutDownAnimator();
                break;

            case ZoomIn:
                animator = new ZoomInAnimator();
                break;
            case ZoomInDown:
                animator = new ZoomInDownAnimator();
                break;
            case ZoomInLeft:
                animator = new ZoomInLeftAnimator();
                break;
            case ZoomInRight:
                animator = new ZoomInRightAnimator();
                break;
            case ZoomInUp:
                animator = new ZoomInUpAnimator();
                break;
            case ZoomOut:
                animator = new ZoomOutAnimator();
                break;
            case ZoomOutDown:
                animator = new ZoomOutDownAnimator();
                break;
            case ZoomOutLeft:
                animator = new ZoomOutLeftAnimator();
                break;
            case ZoomOutRight:
                animator = new ZoomOutRightAnimator();
                break;
            case ZoomOutUp:
                animator = new ZoomOutUpAnimator();
                break;
            default:
                animator = new DropOutAnimator();
                break;
        }
        return animator;
    }
}
